package ricky.loader.protocol
{
	import flash.utils.ByteArray;
	import flash.utils.Endian;
	
	import ricky.Interface.IDecoder;
	import ricky.Interface.ILoadComplete;
	import ricky.loader.Request;
	import ricky.scene.MapData;

	/**
	 * 地图解码类
	 */
	public class MapDecoder implements IDecoder
	{
		public function MapDecoder()
		{
		}
		
		public  function doDecoder(req:Request,onComplete:ILoadComplete):void
		{
			var map:MapData=new MapData();

			var bt:ByteArray=req.data;
			bt.endian=Endian.LITTLE_ENDIAN;
			map.name=bt.readUTF();
			map.mapURLPath=bt.readUTF();
			map.discription=bt.readUTF();
			map.width=bt.readInt();
			map.height=bt.readInt();
			map.gridWidth=bt.readInt();
			map.gridHeight=bt.readInt();
			map.smallMapURL=bt.readUTF();
			
			var l:int=bt.readInt();
			var v:*;
			map.data=new Array();
			for(var i:int=0;i<l;i++)
			{
				v=bt.readByte();
				map.data.push(v);
			}
			
			map.monster=bt.readUTF();
			if(bt.bytesAvailable>0)
			{
				map.aiScript=bt.readUTF();
				map.bornRect=bt.readUTF();
			}
			
			if(bt.bytesAvailable>0)
				map.col=bt.readInt();
			req.data=map;
			bt.length=0;
			onComplete.doComplete(req);
		}
	}
}